package com.newcoder;

import jakarta.annotation.PostConstruct;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @SpringBootApplication注解包含了以下三个注解的功能
 *      @SpringBootConfiguration
 *      @EnableAutoConfiguration
 *      @ComponentScan
 * 该注解默认扫描启动类所在包及其子包的所有Bean组件（Bean扫描）
 * 范围之外的包通过@ComponentScan(com.other)注解来额外扫描
 *
* */

@SpringBootApplication
public class CommunityApplication {

    // ⽤来管理bean的⽣命周期的, 主要⽤来管理bean的初始化⽅法
    // 这个注解修饰的⽅法会在构造器调⽤完以后被执⾏
    // 解决Elasticsearch和Redis底层都使⽤Netty，导致这两者启动的时候，会有冲突，主要是ES底层的代码尝试启动Netty时，发现Netty已经启动，然后报异常。
    @PostConstruct
    public void init() {
        // 解决netty启动冲突问题
        // see Netty4Utils.setAvailableProcessors()
        System.setProperty("es.set.netty.runtime.available.processors", "false");
    }

    public static void main(String[] args) {
        SpringApplication.run(CommunityApplication.class, args);
        System.out.println("服务启动成功！！");
    }

}
